<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>




    // call 的应用场景 


    let arr=[1,2,3,100]
    // arr.jielyMax()


//   let maxVal=  Math.max.call(arr)
//    console.log(maxVal)

   let  max1=window.Math.max(1,2,3,100,200)
   console.log(max1)

   let  maxVal=Math.max.call(null,...arr)   
   console.log(maxVal)          
   

   let  maxVal2=Math.max.apply(null,arr)
   console.log(maxVal2)
   let  minVal2=Math.min.apply(null,arr)
   console.log(minVal2)



//    call('第一个参数是改变的this指向等于这里的第一个参数','传递的参数1','参数2')

//   apply('第一个参数是改变的this指向等于这里的第一个参数','第二个参数必须是一个数组')



//   bind('也可以改变this的指向  但是不能调用原函数 只不过是重新生成一个新的函数 ')  


var   obj={
    names:'刘德华',
    say:function() {
        alert(1)
        console.log(this)
        console.log(this.names)
    }
}


// obj.say()  // 刘德华



let  newfn=  obj.say.bind(this) //this 指向谁都可以
console.log(newfn)

newfn()








</script>
</body>
</html>